// pages/search/search.js
import request from '../../utils/request'
// let isSend = false
let timer = null
Page({

    /**
     * 页面的初始数据
     */
    data: {
        placeholderContent: '', // 默认搜索内容
        hotList: [], // 热搜榜列表
        searchContent: '', // 用户输入的搜索内容数据
        searchList: [], // 关键字模糊匹配数据列表
        historyList: [], // 搜索历史记录列表
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        // 获取初始化数据
        this.getInitData()

        // 获取历史记录
        this.getSearchHistory()
    },
    // 获取初始化的数据
    async getInitData() {
        let placeholderData = await request('/search/default')
        let hotListData = await request('/search/hot/detail')
        this.setData({
            placeholderContent: placeholderData.data.showKeyword,
            hotList: hotListData.data
        })
    },
    // 表单项内容发生改变的回调
    handleInputChange(event) {
        // 更新searchContent
        this.setData({
            searchContent: event.detail.value.trim()
        })
        
        clearTimeout(timer)
        timer = setTimeout(() => {
            this.getSearchList()
        }, 300)
        // if (isSend) {
        //     return
        // }
        // isSend = true
        // this.getSearchList()
        // // 函数节流、防抖 性能优化 这里写的不好 要改进
        // setTimeout(() => {
        //     isSend = false
        // }, 300)
    },
    // 过去搜索数据的功能函数
    async getSearchList() {
        let {searchContent, historyList} = this.data
        if (!searchContent) {
            this.setData({
                searchList: []
            })
            return;
        }

        // 发请求获取关键字模糊匹配数据
        let searchListData = await request('/search', {keywords: searchContent, limit:10})
        // console.log(searchListData)
        this.setData({
            searchList: searchListData.result.songs
        })

        // 将搜索的关键字添加到搜索历史记录中
        if (historyList.indexOf(searchContent) !== -1){
            historyList.splice(historyList.indexOf(searchContent), 1)
        }
        historyList.unshift(searchContent)
        this.setData({
            historyList
        })

        wx.setStorageSync('searchHistory', historyList)
    },
    // 获取本地历史记录的功能函数
    getSearchHistory() {
        let historyList = wx.getStorageSync('searchHistory')
        if (historyList) {
            this.setData({
                historyList
            })
        }
    },
    // 清空搜索输入框内容
    clearSearchContent() {
        this.setData({
            searchContent: '',
            searchList: []
        })
    },
    // 删除搜索历史记录
    deleteSearchHistory() {
        wx.showModal({
            content: '确定要删除吗？',
            success: (res) => {
                if (res.confirm) {
                    // 清空data中historyList
                    this.setData({
                        historyList: []
                    })
                    // 清空本地历史记录缓存
                    wx.removeStorageSync('searchHistory')
                }
            }
        })
       
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }
})